<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>
<script>


    // 自定义构造函数  =>  有点绕  -> (对比官方的构造函数 好好理解一下)

    // 对比构造函数Array  => 函数都是一个特殊的对象

    console.dir(Array);// 以对象形式打印构造函数Array

    var arr = new Array(1, 4, 7);
    // new关键词做的操作
    // 1. 创建一个纯净的实例化对象  []
    // 2. 给实例化对象绑定原型属性[[Prototype]] -> 指向构造函数Array.prototype;
    //    [][[Prototype]] -> Array.prototype  (所有的实例化对象 -> 数组可以通过此属性访问构造函数的原型对象 Array.prototype)
    // 3. this -> []

    // 将传入的参数放到实例化对象中 [1,4,7,length:3]

    // 4. return []; 

    console.log(arr);


    // 实例化对象取值

    // 1. 自己有就找自己的 
    console.log(arr[0]);
    console.log(arr.length);


    // 2.  自己没有 就顺序原型属性[[Prototype]] 找Array.prototype;
    // this -> Array.prototype.push指向谁  -> 调用此方法的实例化对象
    arr.push(2)
    console.log(arr);







</script>

</html>